package ex04;

import java.util.Scanner;

public class Program {
    public static void main(String[] args) {
        String word = "";

        int[] letters = new int[65535];
        int[][] statist = new int[3][10];

        Scanner scan = new Scanner(System.in);
        word = scan.nextLine();
        char[] arChar = word.toCharArray();

        /*
        // Сортируем массив символов по коду
        // Пузырьковая сортировка
        for (int i = 0; i < arChar.length; i++) {
            for (int j = 0; j < arChar.length - 1; j++) {
                if (arChar[j] > arChar[j + 1]){
                    char tmp = arChar[j];
                    arChar[j] = arChar[j + 1];
                    arChar[j + 1] = tmp;
                }
            }
        }
        */
        // считаем сколько символов, номер ячейки это код символа
        for (int i = 0; i < arChar.length; i++) {
             letters[(int)arChar[i]]++;
        }

        // создать переменную для максимального числа, начальное значений 0
        int maxStat = 0;
        int letterStat = 0;

        for (int i = 0; i < 10; i++) {
            // найти максимальное значение в letters
            for (int j = 0; j < letters.length; j++) {
                if (letters[j] > maxStat) {
                    maxStat = letters[j];
                    letterStat = j;
                }
            }
            // переписать ВСЕ коды и значения, которые соответствуют максимальному в другой двухмерный массив
            // сверху количество, внизу код символа
            statist[0][i] = maxStat;
            statist[1][i] = letterStat;
            // записывать на место считаного 0
            letters[letterStat] = 0;
            // подготовка к следующей итерации
            maxStat = 0;
            letterStat = 0;
        }

        // make barchart (not histogram)
        // расчитывают процентный состав числа от максимального числа и уменьшаю в 10 раз
        // первое число всегда 100% поэтому его записываем сразу.
        statist[2][0] = 10;
        for (int i = 1; i < 10; i++){
            double dolya = ((double)statist[0][i] / (double)statist[0][0]) * 100.0;
            statist[2][i] = (int)dolya / 10;
        }

        // нарисуем barchart
        // представляем гистограмму как матрицу 11х10, в ячейке может быть число, знак # или пусто
        for (int i = 11; i > 0; i--) {
            String str = "";
            for (int j = 0; j < 10; j++) {
                if (i == (statist[2][j] + 1)){
                    str += statist[0][j];
                    str += "   ";
                } else if (i <= statist[2][j]) {
                    str += "#   ";
                } else {
                    str += "    ";
                }
            }
            System.out.println(str);
        }
        for (int i = 0; i < 10; i++){
            System.out.print((char)statist[1][i] + "   ");
        }

        /*
        System.out.println("");
        for (int i = 0; i < 10; i++){
            System.out.println("Char = " + (char)statist[1][i] + " count = " + statist[0][i] + " htag = " + statist[2][i]);
        }
        */
    }
}
